package io;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

/**
 * 对象流
 * java.io.ObjectOutputStream和ObjectInputStream
 * 对象输出流可以用于进行对象序列化，对象输入流则用于进行对象反序列化
 *
 * 对象序列化:将一个对象转换为一组可以用于传输或保存的字节的过程
 */
public class OOSDemo {
    public static void main(String[] args) throws IOException {
        Person person = InputUtil.getInputObject(new Person());
        System.out.println(person);
        //将该Person对象写入文件person.obj中保存
        FileOutputStream fos = new FileOutputStream("person.obj");
        ObjectOutputStream oos = new ObjectOutputStream(fos);
        /*
            对象输出流提供的重要方法:
            void writeObject(Object obj)
            将一个对象转换为一组字节后写出(序列化)

            序列化时，要求序列化的类必须实现可序列化接口java.io.Serializable，否则会抛出异常:
            java.io.NotSerializableException
         */
        oos.writeObject(person);
        System.out.println("写出完毕");
        oos.close();


    }
}
